# 文件
# 文件里面存储数据的格式/内容也是有很大的差距的
# 知道文件路径就可以知道这个文件在硬盘上的详细位置，也就可以进一步的知道这个文件里都有什么
# 每个文件对应的路径就是唯一的
# window目录名之间使用 \ 来分割，现在使用 / 其实也可以
# 在代码中表示一个文件的路径，用/更多
# 使用 \ 不太方便，\在字符串里有特殊含义表示转义字符


# 1.打开文件——open 内置函数打开文件
f = open('E:/PythonCode/test.txt', 'r')
# r---read,按照读方式打开
# w---write,按照写方式打开
# a---append,也是写方式打开，把内容写到原有文件内容的末尾
# f此处相当于file的缩写，表示这是一个文件对象
print(f)
print(type(f))  # <class '_io.TextIOWrapper'> python内部给文件对象起的名字

# 如果文件不存在的时候，尝试按照读方式打开，就抛出文件没找到异常~

# open的返回值是一个文件对象
# 文件的内容是在硬盘上的，此处的文件对象则是内存是的一个变量，后续读写文件操作都是拿着这个文件对象来进行操作的
# 计算机中，也把这样的远程操控的“遥控器”成为“句柄”（handler）


# 2.关闭文件
f.close()
# 文件在打开完之后，使用完之后一定要关闭！
# 因为打开文件其实是在申请一定的系统资源，不再使用文件的时候，资源就应该及时释放
# 否则就可能造成文件资源泄露，进一步导致其他的代码无法顺利打开文件
# 正式因为一个系统的资源是有限的，所以一个系统打开文件个数也是有上限的

# 每个程序在启动的时候，都会默认打开三个文件
# 1.标准输入 键盘 input
# 2.标准输出 显示器 print
# 3.标准错误 显示器

# 文件资源泄露是一个很重要的问题，不会第一时间暴露出来，冷不丁偷袭

# python有一个重要的机制！ 垃圾回收机制（GC），自动把不使用的变量给进行释放
# 但是不能完全依赖这个机制，因为自动释放不一定及时~~
# 因此，还是尽量要手动释放













